From d847ecf9711c4b6ada02aa78893203c18ed49450 Mon Sep 17 00:00:00 2001 From: "kaf24@firebug.cl.cam.ac.uk" Date: Mon, 19 Sep 2005 09:14:41 +0000 Subject: [PATCH] Fix VMX domains not cleaning up properly, since some page refncts are not zero. One reason for this is that in function shadow_set_l1e(), before calling function shadow_update_min_max(), one should call __shadow_get_sl2e() again, since the sl2 entry may be changed. Signed-off-by: Xin Xiaohui Signed-off-by: Li Chengyuan --- xen/arch/x86/shadow.c | 2 ++ xen/include/asm-x86/shadow.h | 2 ++ 2 files changed, 4 insertions(+) diff --git a/xen/arch/x86/shadow.c b/xen/arch/x86/shadow.c index f29cfcc234..18e44cc9c0 100644 --- a/xen/arch/x86/shadow.c +++ b/xen/arch/x86/shadow.c @@ -697,6 +697,8 @@ shadow_set_l1e(unsigned long va, l1_pgentry_t new_spte, int create_l1_shadow) } } + __shadow_get_l2e(v, va, &sl2e); + if ( shadow_mode_refcounts(d) ) { l1_pgentry_t old_spte; diff --git a/xen/include/asm-x86/shadow.h b/xen/include/asm-x86/shadow.h index 48dbef8546..0e48038889 100644 --- a/xen/include/asm-x86/shadow.h +++ b/xen/include/asm-x86/shadow.h @@ -1595,6 +1595,8 @@ shadow_set_l1e(unsigned long va, l1_pgentry_t new_spte, int create_l1_shadow) } } + __shadow_get_l2e(v, va, &sl2e); + if ( shadow_mode_refcounts(d) ) { l1_pgentry_t old_spte = shadow_linear_pg_table[l1_linear_offset(va)]; -- 2.30.2